Stworzona przez mnie wizualizacja przedstawia liczbę lotów w 1990 roku w poszczególnych stanach USA. Uzywałam w tym celu bibliotek ggplot i plotly.
airports$state <- state.name[match(airports$state,state.abb)]
airports$Dest <- tolower(airports$state)
n06<-as.data.table(d90)
n06 <- n06[,n:=length(Year), by=.(Dest)]
states <- map_data("state")
n06 <- n06[,c("Dest","n")]
n06 <- aggregate(n06$Dest,n06,length)
n06 <- n06[,c("Dest","n")]
data <- merge(n06,airports,by.x="Dest",by.y="iata")
data$state <- tolower(data$state)
data.geo <- merge(states,data, by.x="region",by.y="state",allow.cartesian=TRUE)
data.geo <- data.geo[order(data.geo$order),]
data <- as.data.table(data)
cities <- data[n>20000,]
cities <- cities[long>(-130) & long <(-70),]
cities <- cities[lat>20 & lat<50,]
colnames(cities)[2] <- "Cities"
cities <- cities[,c("long","lat","Cities","city")]
data.geo <- data.geo[,c("long.x","lat.x","group","region","n")]
write.csv(data.geo,"Mapka 1990")
map <- ggplot(data.geo, aes(long.x, lat.x)) +
geom_polygon(aes(group = group, fill = n)) +
geom_path(aes(group = group), size = 0.2, text = data.geo$region) +
coord_map() +
scale_fill_gradient(
name = "Flights",
high = "black",
low = "lightgreen",
limits = c(0, max(4e+05)),
labels = scales::comma
) +
theme(
axis.title.x = element_blank(),
axis.title.y = element_blank()
) +
ggtitle("Flights in USA in 1990")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning in geom_path(aes(group = group), size = 0.2, text = data.geo$region):
## Ignoring unknown parameters: `text`
# Convert ggplot to plotly
ggplotly(map, tooltip = c("text", "n"))
## Wnioski
Widzimy, że zdecydowanie najwięcej lotów odbbyło się w 1990 roku w stanach Illinois, Georgia i Teksas.
## Uwagi
wiem, że nie do końca udało mi się dopracować wyświeytlany tekst przy najeżdżaniu na mapę. Jeszcze postaram się to naprawić, jednak teraz przed oddaniem pracy już nie mam pomysłu jak to zrobić.
## Dodatek
Zupełnie inna tematyka, ale walczyłam z różnymi wizualizacjami i po długich przygodach otrzymałam animowaną mapkę z ładnym wyświetlanym tekstem przy najeżdżaniu, jednak kraje okazały się w ciekawych miejscach. To tak dla umilenia czasu :)
```r
ramka <- read.csv("C:/Users/Admin/Downloads/countries.csv")
library(plotly)
library(maps)
library(mapdata)
## Warning: pakiet 'mapdata' został zbudowany w wersji R 4.2.3
library(dplyr)
library(leaflet)
## Warning: pakiet 'leaflet' został zbudowany w wersji R 4.2.3
library(geojsonio)
## Warning: pakiet 'geojsonio' został zbudowany w wersji R 4.2.3
## Registered S3 method overwritten by 'geojsonsf':
## method from
## print.geojson geojson
##
## Dołączanie pakietu: 'geojsonio'
## Następujący obiekt został zakryty z 'package:base':
##
## pretty
world1<- geojsonio::geojson_read("https://raw.githubusercontent.com/johan/world.geo.json/master/countries.geo.json", what = "sp")
ramka$Deathrate <- na.omit(ramka$Deathrate)
labels <- sprintf(
"<strong>%s</strong><br/>Alcohol consumption: %g l/capita<br/>Legal age for buying: %s",
ramka$Country, ramka$Population, ramka$Deathrate
) %>% lapply(htmltools::HTML)
bins <- c(0,10000, 20000, 30000, 4000,Inf)
pal <- colorBin("Reds", domain = ramka$Deathrate, bins = bins, na.color = "gray")
map1 <- leaflet(world1) %>%
setView(0,20,2) %>%
addTiles() %>%
addPolygons(color = "black",
weight = 1,
fillColor = ~pal(as.numeric(ramka$Population)),
dashArray = 2,
opacity = 0.6,
fillOpacity = 0.4,
highlightOptions = highlightOptions(
weight = 4,
color = "#123",
dashArray = "",
fillOpacity = 0.8,
bringToFront = TRUE),
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addLegend(pal = pal, values = ~ramka$Population, opacity = 0.9, title = "Population",
position = "bottomright")
map1